是指攻擊者透過建立與目標系統的主動連線並執行特定的查詢,以取得更多目標相關資訊的過程。攻擊者會使用所提取的資訊來識別可能進行系統攻擊的點,並執行密碼攻擊,以未經授權的方式存取系統資源。列舉技術通常是在內部網路環境中進行。
入侵者可能列舉到的資訊包括:
常用來列舉的port
Port | Service | Description |
---|---|---|
21 | FTP | File Transfer Protocol, 用於檔案傳輸 |
22 | SSH | Secure Shell, 用於加密遠程登入與管理 |
23 | TELNET | 不加密的遠程登入協議 |
25 | SMTP | Simple Mail Transfer Protocol, 用於電子郵件傳送 |
53 | DNS | Domain Name System, 用於域名解析 |
69 | TFTP | Trivial File Transfer Protocol, 簡單的檔案傳輸協議 |
80 | HTTP | HyperText Transfer Protocol, 用於網頁傳輸 |
88 | Kerberos | 一種驗證協議,用於安全的身份驗證 |
123 | NTP | Network Time Protocol, 用於時間同步 |
111 | RPC (Linux) | Remote Procedure Call, 用於進行遠程程序調用 (Linux 平台) |
135 | RPC (Windows) | Remote Procedure Call, 用於進行遠程程序調用 (Windows 平台) |
137 | NetBIOS | 用於局域網中的資源共享與命名解析 |
139 | NetBIOS Session | NetBIOS 協議的會話服務,用於檔案和印表機共享 |
161 | SNMP | Simple Network Management Protocol, 用於網路管理 |
179 | BGP | Border Gateway Protocol, 用於路由選擇 |
389 | LDAP | Lightweight Directory Access Protocol, 用於目錄服務 |
445 | SMB | Server Message Block, 用於網路文件共享 |
514 | syslog | 系統日誌服務,用於記錄系統事件 |
636 | LDAP SSL | 安全的 LDAP 協議,透過 SSL 保護傳輸 |
1433 | SQL Server | Microsoft SQL Server 的預設資料庫連接埠 |
2049 | NFS | Network File System, 用於文件共享 |
3268 | LDAP GC | Global Catalog, 用於在 LDAP 中查詢全域目錄 |
3269 | LDAP GC SSL | 使用 SSL 保護的全域目錄查詢 |
3306 | MYSQL | MySQL 資料庫服務的預設連接埠 |
3389 | RDP | Microsoft Remote Desktop Protocol, 用於遠程桌面連接 |
8080 | Tomcat | 一種 Java Servlet 容器,用於運行網頁應用 |
27017 | MongoDB | NoSQL 資料庫 MongoDB 的預設連接埠 |
此部分描述了 NetBIOS 列舉、獲取的資訊以及各種 NetBIOS 列舉工具。NetBIOS 被認為是首先用於列舉的工具,因為它能提取大量有關目標網路的敏感資訊,如用戶和網絡共享資源。
列舉 Windows 系統的第一步是利用 NetBIOS API。NetBIOS 最初是作為客戶端軟件訪問局域網(LAN)資源的 API 開發的。Windows 使用 NetBIOS 進行文件和打印機共享。NetBIOS 名稱是一個 16 字符的 ASCII 字符串,用於識別 TCP/IP 上的網絡設備,其中 15 個字符用於設備名稱,第 16 個字符用於服務或記錄類型。
NetBIOS 使用以下端口:
攻擊者通常針對 NetBIOS 服務,因為它易於利用且在 Windows 系統上運行,即使不使用時也可能開啟。攻擊者使用 NetBIOS 列舉來獲取以下資訊:
攻擊者若發現某個 Windows 系統開啟了 139 端口,可以檢查是否能訪問或查看遠程系統上的資源。 不過,列舉 NetBIOS 名稱的前提是遠程系統必須啟用了文件和打印機共享。根據共享資源的可用性,NetBIOS 列舉可能允許攻擊者讀取或寫入遠程計算機系統,甚至發動拒絕服務(DoS)攻擊。
NetBIOS 名稱的對應代碼
名稱 | NetBIOS 代碼 | 類型 | 獲取的資訊 |
---|---|---|---|
主機名稱 | 00 | 唯一 | 主機名稱 |
網域名稱 | 00 | 群組 | 網域名稱 |
主機名稱 | 03 | 唯一 | 電腦上的訊息服務 |
使用者名稱 | 03 | 唯一 | 已登入使用者的訊息服務 |
主機名稱 | 20 | 唯一 | 伺服器服務運行中 |
網域名稱 | 1D | 群組 | 子網的主瀏覽器名稱 |
網域名稱 | 1B | 唯一 | 主網域瀏覽器名稱,識別主域控制器 (PDC) |
網域名稱 | 1E | 群組 | 瀏覽器服務選舉 |
Nbtstat Utility
Source: https://docs.microsoft.com
nbtstat 參數及其功能所整理的表格:
Nbtstat 參數 | 功能 |
---|---|
-a RemoteName | 顯示遠端電腦的 NetBIOS 名稱表,其中 RemoteName 是遠端電腦的 NetBIOS 名稱。 |
-A IP Address | 顯示遠端電腦的 NetBIOS 名稱表,並以遠端電腦的 IP 位址(點分十進制格式)指定。 |
-c | 列出 NetBIOS 名稱快取的內容,包括名稱表和它們對應的已解析 IP 位址。 |
-n | 顯示由 NetBIOS 應用程式(如伺服器和重定向器)本地註冊的名稱。 |
-r | 顯示通過廣播或 WINS 伺服器解析的所有名稱的數量。 |
-R | 清除名稱快取,並重新加載 Lmhosts 文件中的所有 #PRE 標籤條目。 |
-RR | 釋放並重新向名稱伺服器註冊所有名稱。 |
-s | 列出 NetBIOS 會話表,將目標 IP 位址轉換為計算機 NetBIOS 名稱。 |
-S | 列出當前的 NetBIOS 會話及其狀態和 IP 位址。 |
Interval | 重新顯示所選統計資料,在每次顯示時暫停,時間由 Interval 指定的秒數決定。 |
NetBIOS Enumerator
NetBIOS Enumerator 是一款列舉工具,顯示如何使用遠端網絡支援並處理其他網絡協議(如 SMB)。攻擊者利用 NetBIOS Enumerator 來列舉指定範圍內 IP 位址的詳細資訊,例如 NetBIOS 名稱、使用者名稱、網域名稱和媒體存取控制(MAC)地址等。
此工具對於網路安全分析和漏洞檢測非常有用,特別是在需要了解遠端系統的共享資源和系統細節時。
Nmap
nmap -sV -v --script nbstat.nse <target IP address>
PsTools 套件來列舉使用者帳號,這有助於透過命令行控制和管理遠端系統。
以下是 PsTools 套件中的工具及其功能簡介:
Net View 是一個命令行工具,用於顯示指定工作群組中的計算機列表或某台指定計算機上的共享資源。它可以通過以下方式使用:
<computername>
是要顯示其資源的特定計算機名稱或 IP 地址。涉及使用 SNMP 在目標系統上列舉使用者帳戶和設備。SNMP 架構由一個管理者和多個代理構成,代理嵌入於每個網絡設備中,而管理者安裝在單獨的計算機上。
SNMP 包含兩個用來存取及配置代理的密碼:
攻擊者經常利用預設的社區字串來獲取設備資訊,並藉此列舉網絡資源(例如主機、路由器、設備和共享資源)以及網絡信息(例如 ARP 表、路由表和流量資訊)。
SNMP 的工作原理基於一個分佈式架構,包括 SNMP 管理者、SNMP 代理和多個相關元件。以下是一些與 SNMP 相關的常見命令:
這些命令使 SNMP 在網絡管理中能夠有效地進行監控和控制。
管理資訊庫 (MIB) 是一個虛擬資料庫,包含所有由 SNMP 管理的網路物件的正式描述。它是一個層次化組織的資訊集合,提供了 SNMP 代理資訊和存儲的標準表示法。MIB 元素透過物件標識符 (OID) 識別。OID 是分配給物件的數字名稱,從 MIB 樹的根節點開始,能夠唯一識別 MIB 層次中的物件。
MIB 所管理的物件包括兩種類型:
OID 包含物件的類型(如計數器、字串或位址)、訪問級別(如讀取或讀/寫)、大小限制和範圍資訊。SNMP 管理者使用 MIB 作為代碼本,將 OID 轉換為人類可讀的顯示內容。使用者可以透過網頁瀏覽器訪問 MIB 的內容,輸入 IP 地址和 Lseries.mib,或者輸入 DNS 資料庫名稱和 Lseries.mib。
例如:
Microsoft 提供了隨 Windows SNMP 服務一起安裝的 MIB 列表。主要的 MIB 包括:
SNMPv2 的一些常用命令,使用 community string "public" 來進行列舉:
列舉 SNMPv2 的命令:
snmpwalk -v2c -c public <Target IP Address>
搜尋已安裝軟體的命令:
snmpwalk -v2c -c public <Target IP Address> hrSWInstalledName
查詢主機上 RAM 大小的命令:
snmpwalk -v2c -c public <Target IP Address> hrMemorySize
將 OID 值更改為其他值的命令:
snmpwalk -v2c -c public <Target IP Address> <OID> <New Value>
更改 sysContact OID 的命令:
snmpwalk -v2c -c public <Target IP Address> sysContact <New Value>
使用 Nmap 進行 SNMP 列舉的一些命令,攻擊者可以使用這些命令來檢索與目標 SNMP 伺服器相關的資訊:
檢索 SNMP 服務和運行進程:
nmap -sU -p 161 --script=snmp-processes <Target IP Address>
此命令將檢索目標主機上所有正在運行的 SNMP 進程及其相關連接埠資訊。
檢索 SNMP 伺服器類型和作業系統資訊:
nmap -sU -p 161 --script=snmp-sysdescr <Target IP Address>
此命令會顯示有關 SNMP 伺服器類型和作業系統的詳細資訊。
檢索目標機器上運行的所有應用程式清單:
nmap -sU -p 161 --script=snmp-win32-software <Target IP Address>
此命令將列出目標機器上運行的所有應用程式。
LDAP 列舉攻擊可以手動或自動進行
攻擊者可以使用 Python 進行手動 LDAP 列舉,以下是使用 Python 進行 LDAP 列舉的步驟:
使用 Nmap 檢查目標 LDAP 伺服器是否在端口 389 (LDAP) 或端口 636 (安全 LDAP) 上監聽。
如果伺服器正在這些指定的端口上監聽,通過以下命令安裝 LDAP 來開始列舉:
pip3 install ldap3
如下所示,建立一個伺服器對象(server
),指定目標的 IP 地址或主機名以及端口號。如果伺服器在安全 LDAP 上監聽,指定 use_ssl = True
。
指定 get_info = ldap3.ALL
來檢索目錄系統代理 (DSA) 特定的條目(DSE)命名上下文。
建立連接對象 connection
,並調用 bind()
來啟動連接。如果連接成功,螢幕上會顯示 True
:
>>> import ldap3
>>> server = ldap3.Server('目標 IP 地址', get_info=ldap3.ALL, port=389)
>>> connection = ldap3.Connection(server)
>>> connection.bind()
True
接下來,可以使用以下腳本來檢索資訊,如域名和命名上下文:
>>> server.info
獲得命名上下文後,使用以下腳本檢索所有目錄對象:
>>> connection.search(search_base='DC=DOMAIN,DC=DOMAIN', search_filter='(&(objectClass=*))', search_scope='SUBTREE', attributes='*')
True
>>> connection.entries
使用以下腳本轉儲整個 LDAP:
>>> connection.search(search_base='DC=DOMAIN,DC=DOMAIN', search_filter='(&(objectClass=person))', search_scope='SUBTREE', attributes='userPassword')
True
>>> connection.entries
這些步驟可以幫助攻擊者手動進行 LDAP 列舉,從而獲取有關系統的資訊。
可以通過使用 Nmap 的 NSE 腳本來進行。攻擊者可以使用 ldap-brute
腳本來暴力破解 LDAP 認證。默認情況下,該腳本會使用內建的用戶名和密碼列表。使用 userdb
和 passdb
腳本參數,可以指定自定義的用戶名和密碼列表來進行破解。
nmap -p 389 --script ldap-brute --script-args 'ldap.base="cn=users,dc=CEH,dc=com"' <Target IP Address>
ldap-brute
: 這是 Nmap 中的 NSE 腳本,用來針對 LDAP 伺服器進行暴力破解。ldap.base
: 指定 LDAP 搜索的基準,如此處的 "cn=users,dc=CEH,dc=com"
。<Target IP Address>
: 目標 LDAP 伺服器的 IP 地址。這種方式可以快速且自動化地進行 LDAP 認證嘗試,有助於攻擊者獲取伺服器的訪問權限。
NTP(Network Time Protocol)和NFS(Network File System)是網路管理中的兩個重要協定,但管理員經常在考慮安全性時忽略它們。然而,這兩個協定提供的信息對攻擊者可能非常有價值,尤其是如果攻擊者可以正確地查詢這些服務。
攻擊者可以通過 NTP 列舉指令來查詢這些信息,例如:
ntpq -p
列出 NTP 伺服器的對等伺服器和同步狀態。ntpdc -c sysinfo
查詢 NTP 伺服器的系統信息。常見的 NTP 列舉工具包括:
攻擊者可以使用命令來列出 NFS 伺服器的共享目錄,例如:
showmount -e <target>
:列出 NFS 伺服器上的所有已出口目錄。常見的 NFS 列舉工具包括:
nmap -sV --script=nfs-ls,nfs-statfs,nfs-showmount
)來掃描 NFS 伺服器。這些列舉技術可以幫助攻擊者識別潛在的漏洞,並利用這些漏洞進一步滲透目標網路。
NTP 列舉是指攻擊者使用特定的指令查詢 NTP(Network Time Protocol)伺服器,從中獲取有價值的網路信息。以下是幾個常用的 NTP 列舉工具及其用途:
ntpdate
ntpdate
工具允許使用者手動從指定的 NTP 伺服器獲取時間並同步系統時鐘。它對時間同步非常有用,但不會持續同步(如 NTP 服務程式 ntpd
一樣)。攻擊者可以使用此工具來確定 NTP 伺服器的準確性。ntptrace
用來追蹤時間來源伺服器的層級。
ntptrace
用於追蹤 NTP 伺服器的時間來源,顯示 NTP 伺服器時間從哪些上層伺服器來同步。這對於瞭解網路中 NTP 伺服器的層級結構有幫助,攻擊者可以用來分析哪些伺服器可能是同步的來源伺服器。ntpdc
ntpdc
是一個互動式的工具,允許使用者查詢或更改 NTP 伺服器的運行狀態及配置。它提供了比 ntpq
更高級的功能,攻擊者可用來獲取有關 NTP 伺服器配置的詳細信息,並檢查伺服器是否易於攻擊。ntpq
ntpq
是一個標準的 NTP 客戶端工具,允許使用者查詢 NTP 伺服器的對等伺服器、同步狀態和配置參數。它對於攻擊者了解伺服器的同步狀態以及伺服器與哪些上層伺服器進行通信非常有用。NFS 系統: NFS(Network File System)通常在需要集中管理重要資源的電腦網路中實作。
列舉作用: 攻擊者可以透過 NFS 列舉來識別伺服器上匯出的目錄(exported directories)、與 NFS 伺服器相連的客戶端清單、以及與這些 IP 地址相關的共享資料。
rpcinfo 命令:
rpcinfo -p 10.10.1.19
這個命令會顯示目標伺服器 10.10.1.19
上 NFS 服務的開放端口和運行狀態。
showmount 命令:
showmount -e 10.10.1.9
這個命令會顯示目標伺服器 10.10.1.9
的匯出共享目錄。
兩個 NFS 列舉工具:
RPCScan:
python3 rpc-scan.py 10.10.1.19
SuperEnum:
./SuperEnum
待續,明天會將剩下的列舉技術說完